全部学科
Python全栈
python
NodeJS全栈
nodejs
📅 2026-05-20 8 分钟 ✍️ juanwangdev

insert 插入语句

insert 用于插入数据,核心是掌握自增主键获取与批量插入。

基础插入

XML
<insert id="insert" parameterType="com.example.entity.User">
    INSERT INTO user (username, email, create_time)
    VALUES (#{username}, #{email}, #{createTime})
</insert>

Java 调用:

Java
int rows = mapper.insert(user);
// rows 为影响行数

获取自增主键

useGeneratedKeys 方式(推荐)

XML
<insert id="insert" parameterType="com.example.entity.User"
        useGeneratedKeys="true" keyProperty="id">
    INSERT INTO user (username, email, create_time)
    VALUES (#{username}, #{email}, #{createTime})
</insert>
Java
mapper.insert(user);
System.out.println("插入后的 ID: " + user.getId());

selectKey 方式

XML
<insert id="insert" parameterType="com.example.entity.User">
    <selectKey keyProperty="id" resultType="int" order="AFTER">
        SELECT LAST_INSERT_ID()
    </selectKey>
    INSERT INTO user (username, email, create_time)
    VALUES (#{username}, #{email}, #{createTime})
</insert>

注意:order="AFTER" 表示插入后获取,适用于 MySQL;Oracle 使用 order="BEFORE"

批量插入

XML
<insert id="batchInsert" parameterType="java.util.List">
    INSERT INTO user (username, email, create_time) VALUES
    <foreach collection="list" item="user" separator=",">
        (#{user.username}, #{user.email}, #{user.createTime})
    </foreach>
</insert>
Java
List<User> users = Arrays.asList(user1, user2, user3);
int rows = mapper.batchInsert(users);

注意:批量插入需控制批量大小,避免单次插入过多数据导致内存溢出。

要点总结

  • insert 返回影响行数,非主键值
  • useGeneratedKeys + keyProperty 是获取自增主键推荐方式
  • selectKey 适用于非自增主键场景(如 Oracle 序列)
  • 批量插入使用 foreach 标签,需控制批量大小
想在手机上练习这篇文章的配套题目?
使用微信卷王开发者小程序,打开首页顶部扫码功能识别二维码
← 上一篇 select 查询语句
下一篇 → update 更新语句
扫码体验小程序
加载中
想在手机上刷题学习?
使用微信卷王开发者小程序,打开首页顶部扫码功能识别二维码